package com.bstek.demo.dao;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.bstek.demo.entity.MyPage;
import com.bstek.demo.entity.User;
import com.bstek.demo.entity.UserMessage;
/**
 * 用户信息Dao层
 * @author lemon
 *
 */
@Repository
public interface UserDao {

	/**
	 * 获取用户信息 分页 过滤 查询
	 * @author lemon
	 * @param myPage分页参数
	 * @param filterParams 过滤参数
	 * @param user 自定义查询
	 * @return 返回用户信息
	 */
	List<User> getAll(@Param("myPage")MyPage myPage,
			@Param("filterParams")Map<String,List<String[]>> filterParams,
			@Param("user")User user);
	/**
	 * 获取条数
	 * @author lemon
	 * @return 返回条数
	 */
	Integer getCount();
	/**
	 * 保存信息
	 * @author lemon
	 * @param user 保存的数据信息
	 */
	void saveAll(User user);
	/**
	 * 根据用户名获取信息
	 * @author lemon
	 * @param user 封装查询参数
	 * @return 返回用户信息
	 */
	User getUserByName(User user);
	/**
	 * 获取用户明细信息
	 * @author lemon
	 * @return 返回用户明细信息集合
	 */
	Set<UserMessage> getUserMessage(User user);
	/**
	 * 保存用户明细信息
	 * @author lemon
	 * @param user
	 * @param userMessage
	 */
	void saveMessage(@Param("user")User user,@Param("userMessage")UserMessage userMessage);
	/**
	 * 查询明细信息 分页
	 * @author lemon
	 * @param myPage
	 * @return
	 */
	List<User> getAllMessage(MyPage myPage);
	/**
	 * 根据用户名查询用户明细信息
	 * @author lemon
	 * @param username
	 * @return
	 */
	Set<UserMessage> getUserMessageByUsername(String username);
}
